package com.leetBook.Krahets.array;

import org.junit.Test;

/**
 * 《图解算法与数据结构》数组第 5 题：
 * 你在与一位习惯从右往左阅读的朋友发消息，他发出的文字顺序都与正常相反但单词内容正确，为了和他顺利交流你决定写一个转换程序，把他所发的消息 message 转换为正常语序。
 *
 * 注意：输入字符串 message 中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中，单词间应当仅用单个空格分隔，且不包含任何额外的空格。
 *
 * 示例 1：
 *
 * 输入: message = "the sky is blue"
 * 输出: "blue is sky the"。
 *
 * 提示：
 *
 * 0 <= message.length <= 104
 * message 中包含英文大小写字母、空格和数字
 * message 中至少有一个单词
 *  
 * 注意：
 *
 * 本题与主站 151 题相同：https://leetcode-cn.com/problems/reverse-words-in-a-string/
 */
public class ReverseMassage {
    public String reverseMessage(String message) {
        String[] split = message.split(" ");

        StringBuilder stringBuilder = new StringBuilder();
        for (int i = split.length - 1; i >= 0; i--) {
            if ("".equals(split[i])){
                continue;
            }

            if (i != split.length - 1){
                stringBuilder.append(" ");
            }
            stringBuilder.append(split[i]);

        }
        return stringBuilder.toString();
    }

    @Test
    public void fun1(){
        System.out.println(reverseMessage("the sky is blue"));
        System.out.println(reverseMessage("  hello world!  "));
        System.out.println(reverseMessage("a good   example"));
    }

    public String dynamicPassword(String password, int target) {
        String sub1 = password.substring(0, target);
        return password.substring(target) + sub1;
    }
}
